home *** CD-ROM | disk | FTP | other *** search
/ 9-Digit Zip Code Directory / 9-Digit Zip Code Directory (American Business Information) (ABIZIP-12).ISO / z4src.zip / PENWIN.H < prev    next >
C/C++ Source or Header  |  1993-11-23  |  26KB  |  819 lines

  1. /*****************************************************************************\
  2. *                                                                             *
  3. * penwin.h -    Pen Windows functions, types, and definitions                 *
  4. *                                                                             *
  5. *               Version 1.0                                                   *
  6. *                                                                             *
  7. *               Copyright (c) 1992, Microsoft Corp.  All rights reserved.     *
  8. *                                                                             *
  9. \*****************************************************************************/
  10.  
  11. #ifndef _INC_WINDOWS
  12. #include <windows.h>    /* <windows.h> must be pre-included */
  13. #endif /* _INC_WINDOWS */
  14.  
  15. #ifndef _INC_PENWIN     /* prevent multiple includes */
  16. #define _INC_PENWIN
  17.  
  18. #ifndef RC_INVOKED
  19. #pragma pack(1)
  20. #endif /* RC_INVOKED */
  21.  
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif    /* __cplusplus */
  25.  
  26. /****** General Pen Windows Definitions *************************************/
  27.  
  28. typedef int                    REC;    
  29. typedef LONG                   SYV;    
  30. typedef SYV FAR                *LPSYV;
  31. typedef HANDLE                 HREC;
  32. typedef int                    CL;
  33. typedef LONG                   ALC;
  34. typedef UINT                   HKP;
  35. typedef int (CALLBACK * LPDF)(int, LPVOID, LPVOID, int, DWORD, DWORD);
  36.  
  37. #define BITPENUP               0x8000
  38. #define FPenUpX(x)             (((x) & BITPENUP)!=0)
  39.  
  40. /* Default pen cursor to indicate writing, points northwest */
  41. #define IDC_PEN                MAKEINTRESOURCE(32631)
  42.  
  43. /* alternate select cursor: upsidedown standard arrow, points southeast */
  44. #define IDC_ALTSELECT          MAKEINTRESOURCE(32501)
  45.  
  46. #define RC_WDEFAULT            (0xFFFF)
  47. #define RC_LDEFAULT            (0xFFFFFFFFL)
  48. #define RC_WDEFAULTFLAGS       (0x8000)
  49. #define RC_LDEFAULTFLAGS       (0x80000000L)
  50.  
  51. /* HIWORD(SYV) defines and detection macros */
  52.  
  53. #define SYVHI_SPECIAL          0
  54. #define FIsSpecial(syv)        (HIWORD((syv))==SYVHI_SPECIAL)
  55. #define SYVHI_ANSI             1
  56. #define FIsAnsi(syv)           (HIWORD((syv))==SYVHI_ANSI)
  57. #define SYVHI_GESTURE          2
  58. #define FIsGesture(syv)        (HIWORD((syv))==SYVHI_GESTURE)
  59. #define SYVHI_KANJI            3
  60. #define FIsKanji(syv)          (HIWORD((syv))==SYVHI_KANJI)
  61. #define SYVHI_SHAPE            4
  62. #define FIsShape(syv)          (HIWORD((syv))==SYVHI_SHAPE)
  63. #define SYVHI_UNICODE          5
  64. #define FIsUniCode(syv)        (HIWORD((syv))==SYVHI_UNICODE)
  65. #define SYVHI_VKEY             6
  66. #define FIsVKey(syv)           (HIWORD((syv))==SYVHI_VKEY)
  67.  
  68. /* Macros to convert between SYV and ANSI */
  69.  
  70. #define ChSyvToAnsi(syv)       ((BYTE) (LOBYTE(LOWORD((syv)))))
  71. #define SyvCharacterToSymbol(c) ((LONG)(unsigned char)(c) | 0x00010000)
  72. #define SyvKanjiToSymbol(c) ((LONG)(WORD)(c) | 0x00030000)
  73.  
  74. /* SYV values with special meanings to Pen Windows */
  75.  
  76. #define SYV_NULL               0x00000000L
  77. #define SYV_UNKNOWN            0x00000001L
  78. #define SYV_EMPTY              0x00000003L
  79. #define SYV_BEGINOR            0x00000010L
  80. #define SYV_ENDOR              0x00000011L
  81. #define SYV_OR                 0x00000012L
  82. #define SYV_SOFTNEWLINE        0x00000020L
  83. #define SYV_SPACENULL          SyvCharacterToSymbol('\0')
  84.  
  85. /* SYV values for gestures (map into UNICODE space) */
  86.  
  87. #define SYV_KKCONVERT          0x0002FFD4L
  88. #define SYV_CLEAR              0x0002FFD5L
  89. #define SYV_EXTENDSELECT       0x0002FFD8L
  90. #define SYV_UNDO               0x0002FFD9L
  91. #define SYV_COPY               0x0002FFDAL
  92. #define SYV_CUT                0x0002FFDBL
  93. #define SYV_PASTE              0x0002FFDCL
  94. #define SYV_CLEARWORD          0x0002FFDDL
  95. #define SYV_USER               0x0002FFDEL    /* ;Reserved */
  96. #define SYV_CORRECT            0x0002FFDFL
  97.  
  98. #define SYV_BACKSPACE          0x00020008L
  99. #define SYV_TAB                0x00020009L
  100. #define SYV_RETURN             0x0002000DL
  101. #define SYV_SPACE              0x00020020L
  102.  
  103. #define FIsStdGesture(syv)     \
  104.      ((syv) == SYV_CLEAR       \
  105.    || (syv) == SYV_EXTENDSELECT\
  106.    || (syv) == SYV_UNDO        \
  107.    || (syv) == SYV_COPY        \
  108.    || (syv) == SYV_CUT         \
  109.    || (syv) == SYV_PASTE       \
  110.    || (syv) == SYV_CLEARWORD   \
  111.    || (syv) == SYV_KKCONVERT   \
  112.    || (syv) == SYV_USER        \
  113.    || (syv) == SYV_CORRECT)
  114.  
  115. #define FIsAnsiGesture(syv)    \
  116.      ((syv) == SYV_BACKSPACE   \
  117.    || (syv) == SYV_TAB         \
  118.    || (syv) == SYV_RETURN      \
  119.    || (syv) == SYV_SPACE)
  120.  
  121. /* Application specific gestures, Circle a-z and Circle A-Z */
  122.  
  123. #define SYV_APPGESTUREMASK     0x00020000L
  124. #define SYV_CIRCLEUPA          0x000224B6L
  125. #define SYV_CIRCLEUPZ          0x000224CFL
  126. #define SYV_CIRCLELOA          0x000224D0L
  127. #define SYV_CIRCLELOZ          0x000224E9L
  128.  
  129. /* Gesture Macros */
  130.  
  131. #define FIsLoAppGesture(syv)   (syv >= SYV_CIRCLELOA && syv <= SYV_CIRCLELOZ)
  132. #define FIsUpAppGesture(syv)   (syv >= SYV_CIRCLEUPA && syv <= SYV_CIRCLEUPZ)
  133. #define FIsAppGesture(syv)     (syv>=SYV_CIRCLEUPA && syv<=SYV_CIRCLELOZ)
  134.  
  135. #define SyvAppGestureFromLoAnsi(ansi) ((DWORD)(BYTE)ansi- 'a' + SYV_CIRCLELOA)
  136. #define SyvAppGestureFromUpAnsi(ansi) ((DWORD)(BYTE)ansi- 'A' + SYV_CIRCLEUPA)
  137. #define AnsiFromSyvAppGesture(syv) ChSyvToAnsi( \
  138.     syv-(FIsUpAppGesture(syv)? SYV_CIRCLEUPA-(SYV)'A': SYV_CIRCLELOA-(SYV)'a'))
  139.  
  140. /* SYV definitions for shapes */
  141.  
  142. #define SYV_SHAPELINE          0x00040001L
  143. #define SYV_SHAPEELLIPSE       0x00040002L
  144. #define SYV_SHAPERECT          0x00040003L
  145. #define SYV_SHAPEMIN           SYV_SHAPELINE
  146. #define SYV_SHAPEMAX           SYV_SHAPERECT
  147.  
  148. /****** Recognition Error Codes *********************************************/
  149.  
  150. #define REC_OEM                (-1024)
  151. #define REC_LANGUAGE           (-48)
  152. #define REC_GUIDE              (-47)
  153. #define REC_PARAMERROR         (-46)
  154. #define REC_INVALIDREF         (-45)
  155. #define REC_RECTEXCLUDE        (-44)
  156. #define REC_RECTBOUND          (-43)
  157. #define REC_PCM                (-42)
  158. #define REC_RESULTMODE         (-41)
  159. #define REC_HWND               (-40)
  160. #define REC_ALC                (-39)
  161. #define REC_ERRORLEVEL         (-38)
  162. #define REC_CLVERIFY           (-37)
  163. #define REC_DICT               (-36)
  164. #define REC_HREC               (-35)
  165. #define REC_BADEVENTREF        (-33)
  166. #define REC_NOCOLLECTION       (-32)
  167.  
  168. #define REC_DEBUG              (-32)    
  169.  
  170. #define REC_POINTEREVENT       (-31)
  171. #define REC_BADHPENDATA        (-9)    
  172. #define REC_OOM                (-8)
  173. #define REC_NOINPUT            (-7)
  174. #define REC_NOTABLET           (-6)
  175. #define REC_BUSY               (-5)
  176. #define REC_BUFFERTOOSMALL     (-4)
  177. #define REC_ABORT              (-3)
  178.  
  179. #define REC_OVERFLOW           (-1)
  180.  
  181. #define REC_OK                 0
  182. #define REC_TERMBOUND          1
  183. #define REC_TERMEX             2
  184. #define REC_TERMPENUP          3
  185. #define REC_TERMRANGE          4
  186. #define REC_TERMTIMEOUT        5
  187. #define REC_DONE               6
  188. #define REC_TERMOEM            512
  189.  
  190. /****** Pen Driver Structures and Entry points ******************************/
  191.  
  192. typedef struct tagOEMPENINFO
  193.    {
  194.    UINT wPdt;
  195.    UINT wValueMax;
  196.    UINT wDistinct;
  197.    }
  198.    OEMPENINFO, FAR *LPOEMPENINFO;
  199.  
  200. #define PDT_NULL               0
  201. #define PDT_PRESSURE           1
  202. #define PDT_HEIGHT             2
  203. #define PDT_ANGLEXY            3
  204. #define PDT_ANGLEZ             4
  205. #define PDT_BARRELROTATION     5
  206. #define PDT_OEMSPECIFIC        16
  207.  
  208. #define MAXOEMDATAWORDS        6
  209.  
  210. typedef struct tagPENPACKET
  211.    {
  212.    UINT wTabletX;
  213.    UINT wTabletY;
  214.    UINT wPDK;
  215.    UINT rgwOemData[MAXOEMDATAWORDS];
  216.    }
  217.    PENPACKET, FAR *LPPENPACKET;
  218.  
  219. typedef BOOL (CALLBACK * LPFNRAWHOOK)(LPPENPACKET);
  220.  
  221. typedef struct tagPENINFO
  222.    {
  223.    UINT cxRawWidth;       
  224.    UINT cyRawHeight;       
  225.    UINT wDistinctWidth;   
  226.    UINT wDistinctHeight;  
  227.    int nSamplingRate; 
  228.    int nSamplingDist; 
  229.    LONG lPdc;        
  230.    int cPens;        
  231.    int cbOemData;    
  232.    OEMPENINFO rgoempeninfo[MAXOEMDATAWORDS];  
  233.    UINT rgwReserved[8];     
  234.    }
  235.    PENINFO, FAR *LPPENINFO;
  236.  
  237. #define PDC_INTEGRATED         0x00000001L
  238. #define PDC_PROXIMITY          0x00000002L
  239. #define PDC_RANGE              0x00000004L
  240. #define PDC_INVERT             0x00000008L
  241. #define PDC_RELATIVE           0x00000010L
  242. #define PDC_BARREL1            0x00000020L
  243. #define PDC_BARREL2            0x00000040L
  244. #define PDC_BARREL3            0x00000080L
  245.  
  246. typedef struct tagSTROKEINFO
  247.    {
  248.    UINT cPnt;        
  249.    UINT cbPnts;    
  250.    UINT wPdk;        
  251.    DWORD dwTick;    
  252.    }
  253.    STROKEINFO, FAR *LPSTROKEINFO;
  254.  
  255. typedef struct tagCALBSTRUCT
  256.    {
  257.    int wOffsetX;
  258.    int wOffsetY;
  259.    int wDistinctWidth;
  260.    int wDistinctHeight;
  261.    }
  262.    CALBSTRUCT, FAR *LPCALBSTRUCT;
  263.  
  264. /****** DRV_ values for pen driver specific messages ************************/
  265.  
  266. #define DRV_SetPenDriverEntryPoints    DRV_RESERVED+1
  267. #define DRV_RemovePenDriverEntryPoints DRV_RESERVED+2
  268. #define DRV_SetPenSamplingRate         DRV_RESERVED+3
  269. #define DRV_SetPenSamplingDist         DRV_RESERVED+4
  270. #define DRV_GetName                    DRV_RESERVED+5
  271. #define DRV_GetVersion                 DRV_RESERVED+6
  272. #define DRV_GetPenInfo                 DRV_RESERVED+7
  273. #define DRV_GetCalibration             DRV_RESERVED+11
  274. #define DRV_SetCalibration             DRV_RESERVED+12
  275.  
  276. VOID WINAPI UpdatePenInfo(LPPENINFO);
  277. BOOL WINAPI EndPenCollection(REC);
  278. REC  WINAPI GetPenHwData(LPPOINT, LPVOID, int, UINT, LPSTROKEINFO);
  279. REC  WINAPI GetPenHwEventData(UINT, UINT, LPPOINT, LPVOID, int, LPSTROKEINFO);
  280. VOID WINAPI PenPacket(VOID);
  281. BOOL WINAPI SetPenHook(HKP, LPFNRAWHOOK);
  282.  
  283. /****** Pen Hardware Constants **********************************************/
  284.  
  285. #define PDK_UP                 0x0000    
  286. #define PDK_DOWN               0x0001    
  287. #define PDK_BARREL1            0x0002    
  288. #define PDK_BARREL2            0x0004    
  289. #define PDK_BARREL3            0x0008    
  290. #define PDK_TRANSITION         0x0010    
  291. #define PDK_INVERTED           0x0080    
  292. #define PDK_OUTOFRANGE         0x4000    
  293. #define PDK_DRIVER             0x8000    
  294. #define PDK_TIPMASK            0x0001    
  295. #define PDK_SWITCHES           (PDK_DOWN|PDK_BARREL1|PDK_BARREL2|PDK_BARREL3)
  296.  
  297. #define PCM_PENUP              0x00000001L
  298. #define PCM_RANGE              0x00000002L
  299. #define PCM_INVERT             0x00000020L
  300. #define PCM_RECTEXCLUDE        0x00002000L
  301. #define PCM_RECTBOUND          0x00004000L
  302. #define PCM_TIMEOUT            0x00008000L
  303. #define PCM_ADDDEFAULTS        RC_LDEFAULTFLAGS /* 0x80000000L */
  304.  
  305. /****** Virtual Event Layer *************************************************/
  306.  
  307. VOID WINAPI PostVirtualKeyEvent(UINT, BOOL);
  308. VOID WINAPI PostVirtualMouseEvent(UINT, int, int);
  309. VOID WINAPI AtomicVirtualEvent(BOOL);
  310.  
  311. #define VWM_MOUSEMOVE          0x0001
  312. #define VWM_MOUSELEFTDOWN      0x0002
  313. #define VWM_MOUSELEFTUP        0x0004
  314. #define VWM_MOUSERIGHTDOWN     0x0008
  315. #define VWM_MOUSERIGHTUP       0x0010
  316.  
  317. /****** RC Definition *************************************************************/
  318.  
  319. #define CL_NULL                0
  320. #define CL_MINIMUM             1
  321. #define CL_MAXIMUM             100
  322. #define INKWIDTH_MINIMUM       0
  323. #define INKWIDTH_MAXIMUM       15
  324. #define ENUM_MINIMUM           1
  325. #define ENUM_MAXIMUM           4096
  326. #define MAXDICTIONARIES        16
  327.  
  328. typedef struct tagGUIDE
  329.    {
  330.    int xOrigin;    
  331.    int yOrigin;
  332.    int cxBox;
  333.    int cyBox;
  334.    int cxBase;
  335.    int cyBase;
  336.    int cHorzBox;
  337.    int cVertBox;
  338.    int cyMid;
  339.    }
  340.    GUIDE, FAR *LPGUIDE;
  341.  
  342. typedef BOOL (CALLBACK * RCYIELDPROC)(VOID);
  343.  
  344. #define cbRcLanguageMax        44
  345. #define cbRcUserMax            32
  346. #define cbRcrgbfAlcMax         32
  347. #define cwRcReservedMax        8
  348.  
  349. typedef struct tagRC
  350.    {
  351.    HREC hrec;
  352.    HWND hwnd;
  353.    UINT wEventRef;        
  354.    UINT wRcPreferences;
  355.    LONG lRcOptions;
  356.    RCYIELDPROC lpfnYield;
  357.    BYTE lpUser[cbRcUserMax];
  358.    UINT wCountry;
  359.    UINT wIntlPreferences;
  360.    char lpLanguage[cbRcLanguageMax];
  361.    LPDF rglpdf[MAXDICTIONARIES];
  362.    UINT wTryDictionary;
  363.    CL clErrorLevel;
  364.    ALC alc;
  365.    ALC alcPriority;
  366.    BYTE rgbfAlc[cbRcrgbfAlcMax];
  367.    UINT wResultMode;
  368.    UINT wTimeOut;
  369.    LONG lPcm;
  370.    RECT rectBound;
  371.    RECT rectExclude;
  372.    GUIDE guide;
  373.    UINT wRcOrient;
  374.    UINT wRcDirect;
  375.    int nInkWidth;
  376.    COLORREF rgbInk;
  377.    DWORD dwAppParam;
  378.    DWORD dwDictParam;
  379.    DWORD dwRecognizer;
  380.    UINT rgwReserved[cwRcReservedMax];
  381.    }
  382.    RC, FAR *LPRC;
  383.  
  384. typedef HANDLE HPENDATA;
  385.  
  386. typedef struct tagSYC
  387.    {
  388.    UINT wStrokeFirst;
  389.    UINT wPntFirst;
  390.    UINT wStrokeLast;
  391.    UINT wPntLast;
  392.    BOOL fLastSyc;
  393.    }
  394.    SYC, FAR *LPSYC;
  395.     
  396. #define wPntAll                (UINT)0xFFFF
  397. #define iSycNull               (-1)
  398.  
  399. typedef struct tagSYE
  400.    {
  401.    SYV syv;
  402.    LONG lRecogVal;
  403.    CL cl;
  404.    int iSyc;
  405.    }
  406.    SYE, FAR *LPSYE;
  407.  
  408. #define MAXHOTSPOT             8
  409.  
  410. typedef struct tagSYG
  411.    {
  412.    POINT rgpntHotSpots[MAXHOTSPOT];
  413.    int cHotSpot;
  414.    int nFirstBox;
  415.    LONG lRecogVal;
  416.    LPSYE lpsye;
  417.    int cSye;
  418.    LPSYC lpsyc;
  419.    int cSyc;
  420.    }
  421.    SYG, FAR *LPSYG;
  422.  
  423. typedef int (CALLBACK *ENUMPROC)(LPSYV, int, VOID FAR *);
  424.  
  425. typedef struct tagRCRESULT
  426.    {
  427.    SYG syg;
  428.    UINT wResultsType;
  429.    int cSyv;
  430.    LPSYV lpsyv;
  431.    HANDLE hSyv;
  432.    int nBaseLine;
  433.    int nMidLine;
  434.    HPENDATA hpendata;
  435.    RECT rectBoundInk;
  436.    POINT pntEnd;
  437.    LPRC lprc;
  438.    }
  439.    RCRESULT, FAR *LPRCRESULT;
  440.  
  441. #define RCRT_DEFAULT           0x0000
  442. #define RCRT_UNIDENTIFIED      0x0001 
  443. #define RCRT_GESTURE           0x0002 
  444. #define RCRT_NOSYMBOLMATCH     0x0004    
  445. #define RCRT_PRIVATE           0x4000 
  446. #define RCRT_NORECOG           0x8000 
  447. #define RCRT_ALREADYPROCESSED  0x0008   
  448. #define RCRT_GESTURETRANSLATED 0x0010 
  449. #define RCRT_GESTURETOKEYS     0x0020 
  450.  
  451. #define HKP_SETHOOK            0
  452. #define HKP_UNHOOK             0xFFFF
  453. #define HWR_RESULTS            0
  454. #define HWR_APPWIDE            1
  455.  
  456. #define PEN_NOINKWIDTH         0
  457. #define LPDFNULL               ((LPDF)NULL)
  458.  
  459. #define RPA_DEFAULT            1
  460.  
  461. /* GetGlobalRC return codes */
  462. #define GGRC_OK                0
  463. #define GGRC_DICTBUFTOOSMALL   1
  464. #define GGRC_PARAMERROR        2
  465.  
  466. /* SetGlobalRC return code flags */
  467. #define SGRC_OK                0x0000
  468. #define SGRC_USER              0x0001
  469. #define SGRC_PARAMERROR        0x0002
  470. #define SGRC_RC                0x0004
  471. #define SGRC_RECOGNIZER        0x0008
  472. #define SGRC_DICTIONARY        0x0010
  473. #define SGRC_INIFILE           0x0020
  474.  
  475. #define GetWEventRef()         (LOWORD(GetMessageExtraInfo()))
  476.  
  477. HREC WINAPI InstallRecognizer(LPSTR);
  478. VOID WINAPI UninstallRecognizer(HREC);
  479. UINT WINAPI GetGlobalRC(LPRC, LPSTR, LPSTR, int);
  480. UINT WINAPI SetGlobalRC(LPRC, LPSTR, LPSTR);
  481. VOID WINAPI RegisterPenApp(UINT, BOOL);
  482. UINT WINAPI IsPenAware(VOID);
  483. BOOL WINAPI SetRecogHook(UINT, UINT, HWND);
  484. VOID WINAPI InitRC(HWND, LPRC);
  485. REC  WINAPI Recognize(LPRC);
  486. REC  WINAPI RecognizeData(LPRC, HPENDATA);
  487. BOOL WINAPI TrainInk(LPRC, HPENDATA, LPSYV);
  488. BOOL WINAPI TrainContext(LPRCRESULT, LPSYE, int, LPSYC, int);
  489. REC  WINAPI ProcessWriting(HWND, LPRC);    
  490. BOOL WINAPI CorrectWriting(HWND, LPSTR, UINT, LPRC, DWORD, DWORD);
  491. VOID WINAPI EmulatePen(BOOL);
  492. int  WINAPI GetSymbolMaxLength(LPSYG);
  493. int  WINAPI GetSymbolCount(LPSYG);
  494. VOID WINAPI FirstSymbolFromGraph(LPSYG, LPSYV, int, int FAR *);
  495. UINT WINAPI EnumSymbols(LPSYG, WORD, ENUMPROC, LPVOID);
  496.  
  497. /****** Miscellaneous Functions *********************************************/
  498.  
  499. BOOL WINAPI TPtoDP(LPPOINT, int);
  500. BOOL WINAPI DPtoTP(LPPOINT, int);
  501. VOID WINAPI BoundingRectFromPoints(LPPOINT, int, LPRECT);
  502. BOOL WINAPI SymbolToCharacter(LPSYV, int, LPSTR, LPINT);
  503. int  WINAPI CharacterToSymbol(LPSTR, int, LPSYV);
  504. UINT WINAPI GetVersionPenWin(VOID);
  505. BOOL WINAPI ExecuteGesture(HWND, SYV, LPRCRESULT);
  506.  
  507. /****** RC Options and Flags  ***********************************************/
  508.  
  509. #define ALC_ALL                0x000043FFL
  510. #define ALC_DEFAULT            0x00000000L
  511. #define ALC_LCALPHA            0x00000001L
  512. #define ALC_UCALPHA            0x00000002L
  513. #define ALC_ALPHA              0x00000003L
  514. #define ALC_NUMERIC            0x00000004L
  515. #define ALC_ALPHANUMERIC       0x00000007L
  516. #define ALC_PUNC               0x00000008L
  517. #define ALC_MATH               0x00000010L
  518. #define ALC_MONETARY           0x00000020L
  519. #define ALC_OTHER              0x00000040L
  520. #define ALC_WHITE              0x00000100L
  521. #define ALC_NONPRINT           0x00000200L
  522. #define ALC_GESTURE            0x00004000L
  523. #define ALC_USEBITMAP          0x00008000L
  524. #define ALC_DBCS               0x00000400L
  525. #define ALC_HIRAGANA           0x00010000L
  526. #define ALC_KATAKANA           0x00020000L
  527. #define ALC_KANJI              0x00040000L
  528. #define ALC_OEM                0x0FF80000L
  529. #define ALC_RESERVED           0xF0003800L
  530. #define ALC_NOPRIORITY         0x00000000L
  531. #define ALC_SYSMINIMUM (ALC_ALPHANUMERIC | ALC_PUNC | ALC_WHITE | ALC_GESTURE)
  532.  
  533. #define MpAlcB(lprc,i) ((lprc)->rgbfAlc[((i) & 0xff) >> 3])
  534. #define MpIbf(i)       ((BYTE)(1 << ((i) & 7)))
  535.  
  536. #define SetAlcBitAnsi(lprc,i)      do {MpAlcB(lprc,i) |= MpIbf(i);} while (0)
  537. #define ResetAlcBitAnsi(lprc,i)    do {MpAlcB(lprc,i) &= ~MpIbf(i);} while (0)
  538. #define IsAlcBitAnsi(lprc, i)      ((MpAlcB(lprc,i) & MpIbf(i)) != 0)
  539.  
  540. #define RCD_DEFAULT            0
  541. #define RCD_LR                 1
  542. #define RCD_RL                 2
  543. #define RCD_TB                 3
  544. #define RCD_BT                 4
  545.  
  546. #define RCO_NOPOINTEREVENT     0x00000001L
  547. #define RCO_SAVEALLDATA        0x00000002L
  548. #define RCO_SAVEHPENDATA       0x00000004L
  549. #define RCO_NOFLASHUNKNOWN     0x00000008L
  550. #define RCO_TABLETCOORD        0x00000010L
  551. #define RCO_NOSPACEBREAK       0x00000020L
  552. #define RCO_NOHIDECURSOR       0x00000040L
  553. #define RCO_NOHOOK             0x00000080L
  554. #define RCO_BOXED              0x00000100L
  555. #define RCO_SUGGEST            0x00000200L
  556. #define RCO_DISABLEGESMAP      0x00000400L
  557. #define RCO_NOFLASHCURSOR      0x00000800L
  558. #define RCO_COLDRECOG          0x00008000L
  559.  
  560. #define RCP_LEFTHAND           0x0001
  561. #define RCP_MAPCHAR            0x0004
  562.  
  563. #define RCOR_NORMAL            1
  564. #define RCOR_RIGHT             2
  565. #define RCOR_UPSIDEDOWN        3
  566. #define RCOR_LEFT              4
  567.  
  568. #define RRM_STROKE             0
  569. #define RRM_SYMBOL             1
  570. #define RRM_WORD               2
  571. #define RRM_NEWLINE            3
  572. #define RRM_COMPLETE           16
  573.  
  574. #define RCIP_ALLANSICHAR       0x0001
  575. #define RCIP_MASK              0x0001
  576.  
  577. #define CWR_STRIPCR            0x00000001L
  578. #define CWR_STRIPLF            0x00000002L
  579. #define CWR_STRIPTAB           0x00000004L
  580. #define CWR_SINGLELINEEDIT     0x00000007L
  581. #define CWR_TITLE              0x00000010L
  582. #define CWR_KKCONVERT          0x00000020L
  583.  
  584. #define MAP_GESTOGES                (RCRT_GESTURE|RCRT_GESTURETRANSLATED)
  585. #define MAP_GESTOVKEYS            (RCRT_GESTURETOKEYS|RCRT_ALREADYPROCESSED)
  586.  
  587. #define IsGestureToGesture(lprcresult)    (((lprcresult)->wResultstype & MAP_GESTOGES \
  588.                                                      ) == MAP_GESTOGES)
  589.  
  590. #define IsGestureToVkeys(lprcresult)    (((lprcresult)->wResultstype & MAP_GESTOVKEYS \
  591.                                                      ) == MAP_GESTOVKEYS)
  592.  
  593. #define SetAlreadyProcessed(lprcresult) ((lprcresult)->wResultsType = ((lprcresult)->wResultsType \
  594.                                                         & ~RCRT_GESTURETOKEYS) | RCRT_ALREADYPROCESSED)
  595.  
  596. /****** Pen Data Type *******************************************************/
  597.  
  598. typedef struct tagPENDATAHEADER
  599.    {
  600.    UINT wVersion;
  601.    UINT cbSizeUsed;        
  602.    UINT cStrokes;          
  603.    UINT cPnt;              
  604.    UINT cPntStrokeMax;
  605.    RECT rectBound;
  606.    UINT wPndts;            
  607.    int  nInkWidth;
  608.    DWORD rgbInk;
  609.    }
  610.    PENDATAHEADER, FAR *LPPENDATAHEADER, FAR *LPPENDATA;
  611.  
  612. #define PDTS_LOMETRIC          0x0000
  613. #define PDTS_HIMETRIC          0x0001
  614. #define PDTS_HIENGLISH         0x0002
  615. #define PDTS_SCALEMAX          0x0003
  616. #define PDTS_DISPLAY           0x0003
  617. #define PDTS_ARBITRARY         0x0004
  618. #define PDTS_SCALEMASK         0x000F
  619. #define PDTS_STANDARDSCALE     PDTS_HIENGLISH 
  620.  
  621. #define PDTS_NOPENINFO         0x0100  
  622. #define PDTS_NOUPPOINTS        0x0200  
  623. #define PDTS_NOOEMDATA         0x0400
  624. #define PDTS_NOCOLINEAR        0x0800  
  625. #define PDTS_COMPRESSED        0x8000
  626. #define PDTS_COMPRESSMETHOD    0x00F0  
  627. #define PDTS_COMPRESS2NDDERIV  0x0010 
  628.  
  629. #define PDTT_DEFAULT           0x0000         
  630. #define PDTT_PENINFO           PDTS_NOPENINFO 
  631. #define PDTT_UPPOINTS          PDTS_NOUPPOINTS
  632. #define PDTT_OEMDATA           PDTS_NOOEMDATA
  633. #define PDTT_COLINEAR          PDTS_NOCOLINEAR 
  634. #define PDTT_COMPRESS          PDTS_COMPRESSED
  635. #define PDTT_DECOMPRESS        0x4000
  636. #define PDTT_ALL (PDTT_PENINFO|PDTT_UPPOINTS|PDTT_OEMDATA|PDTT_COLINEAR)
  637.  
  638. #define DestroyPenData(hpendata) (GlobalFree(hpendata)==NULL)
  639. #define EndEnumStrokes(hpendata) GlobalUnlock(hpendata)
  640.  
  641. BOOL WINAPI IsPenEvent(UINT, LONG);
  642. BOOL WINAPI GetPenAsyncState(UINT);
  643.  
  644. BOOL WINAPI GetPenDataInfo(HPENDATA, LPPENDATAHEADER, LPPENINFO, DWORD);
  645. BOOL WINAPI GetPenDataStroke(LPPENDATA, UINT, LPPOINT FAR *, LPVOID FAR *, LPSTROKEINFO );
  646. BOOL WINAPI GetPointsFromPenData(HPENDATA, UINT, UINT, UINT, LPPOINT);
  647. VOID WINAPI DrawPenData(HDC, LPRECT, HPENDATA);
  648. BOOL WINAPI MetricScalePenData(HPENDATA, UINT);
  649. BOOL WINAPI ResizePenData(HPENDATA, LPRECT);
  650. BOOL WINAPI OffsetPenData(HPENDATA, int, int);
  651. BOOL WINAPI RedisplayPenData(HDC, HPENDATA, LPPOINT, LPPOINT, int, DWORD);
  652. HPENDATA  WINAPI CompactPenData(HPENDATA, UINT );
  653. HPENDATA  WINAPI DuplicatePenData(HPENDATA, UINT);
  654. HPENDATA  WINAPI CreatePenData(LPPENINFO, int, UINT, UINT); 
  655. HPENDATA  WINAPI AddPointsPenData(HPENDATA, LPPOINT, LPVOID, LPSTROKEINFO);
  656. LPPENDATA WINAPI BeginEnumStrokes(HPENDATA );
  657.  
  658. /****** New Windows Messages ************************************************/
  659.  
  660. #define WM_RCRESULT            (WM_PENWINFIRST+1)
  661. #define WM_HOOKRCRESULT        (WM_PENWINFIRST+2)
  662. #define WM_GLOBALRCCHANGE      (WM_PENWINFIRST+3)
  663. #define WM_SKB                 (WM_PENWINFIRST+4)
  664. #define WM_HEDITCTL            (WM_PENWINFIRST+5)
  665.  
  666. /****** Dictionary **********************************************************/
  667.  
  668. #define cbDictPathMax          255
  669. #define DIRQ_QUERY             1
  670. #define DIRQ_DESCRIPTION       2
  671. #define DIRQ_CONFIGURE         3
  672. #define DIRQ_OPEN              4
  673. #define DIRQ_CLOSE             5
  674. #define DIRQ_SETWORDLISTS      6
  675. #define DIRQ_STRING            7
  676. #define DIRQ_SUGGEST           8
  677. #define DIRQ_ADD               9
  678. #define DIRQ_DELETE            10
  679. #define DIRQ_FLUSH             11
  680. #define DIRQ_RCCHANGE          12
  681. #define DIRQ_SYMBOLGRAPH       13
  682. #define DIRQ_INIT                     14
  683. #define DIRQ_CLEANUP                 15
  684. #define DIRQ_COPYRIGHT             16
  685.  
  686.  
  687. #define DIRQ_USER              4096
  688.  
  689. BOOL WINAPI DictionarySearch(LPRC, LPSYE, int, LPSYV, int);
  690.  
  691. /****** Handwriting Edit Control ********************************************/
  692.  
  693. #define HE_GETRC               3
  694. #define HE_SETRC               4
  695. #define HE_GETINFLATE          5
  696. #define HE_SETINFLATE          6
  697. #define HE_GETUNDERLINE        7
  698. #define HE_SETUNDERLINE        8
  699. #define HE_GETINKHANDLE        9
  700. #define HE_SETINKMODE          10
  701. #define HE_STOPINKMODE         11
  702. #define HE_GETRCRESULTCODE     12
  703. #define HE_DEFAULTFONT         13
  704. #define HE_CHARPOSITION        14
  705. #define HE_CHAROFFSET          15
  706.  
  707. #define HE_GETRCRESULT         22
  708.  
  709. #define HE_KKCONVERT           30
  710. #define HE_GETKKCONVERT        31
  711. #define HE_CANCELKKCONVERT     32
  712. #define HE_FIXKKCONVERT        33
  713.  
  714. #define HEKK_DEFAULT           0
  715. #define HEKK_CONVERT           1
  716. #define HEKK_CANDIDATE         2
  717.  
  718. #define HEP_NORECOG            0
  719. #define HEP_RECOG              1
  720. #define HEP_WAITFORTAP         2
  721.  
  722. #define HN_ENDREC              4
  723. #define HN_DELAYEDRECOGFAIL    5
  724.  
  725. #define HN_RCRESULT            20
  726.  
  727. #define HN_ENDKKCONVERT        30
  728.  
  729. typedef struct tagRECTOFS
  730.    {
  731.    int dLeft;
  732.    int dTop;
  733.    int dRight;
  734.    int dBottom;
  735.    }
  736.    RECTOFS, FAR *LPRECTOFS;
  737.  
  738. /****** Boxed Edit Control **************************************************/
  739.  
  740. typedef struct tagBOXLAYOUT
  741.    {
  742.    int cyCusp;      
  743.    int cyEndCusp;
  744.    UINT style;      
  745.    DWORD rgbText;
  746.    DWORD rgbBox; 
  747.    DWORD rgbSelect;
  748.    }
  749.    BOXLAYOUT, FAR *LPBOXLAYOUT;
  750.  
  751. #define BXS_NONE               0U
  752. #define BXS_RECT               1U
  753. #define BXS_ENDTEXTMARK        2U
  754. #define BXS_MASK               3U
  755.  
  756. #define HE_GETBOXLAYOUT        20
  757. #define HE_SETBOXLAYOUT        21
  758.  
  759. #define BXD_CELLWIDTH          12
  760. #define BXD_CELLHEIGHT         16
  761. #define BXD_BASEHEIGHT         13
  762. #define BXD_BASEHORZ           0
  763. #define BXD_CUSPHEIGHT         2
  764. #define BXD_ENDCUSPHEIGHT      4
  765.  
  766. /****** Screen Keyboard *****************************************************/
  767.  
  768. typedef struct tagSKBINFO
  769.    {
  770.    HWND hwnd;
  771.    UINT nPad;
  772.    BOOL fVisible;
  773.    BOOL fMinimized;
  774.    RECT rect;
  775.    DWORD dwReserved;
  776.    }
  777.    SKBINFO, FAR *LPSKBINFO;
  778.  
  779. #define SKB_QUERY              0x0000
  780. #define SKB_SHOW               0x0001
  781. #define SKB_HIDE               0x0002
  782. #define SKB_CENTER             0x0010
  783. #define SKB_MOVE               0x0020
  784. #define SKB_MINIMIZE           0x0040
  785. #define SKB_FULL               0x0100
  786. #define SKB_BASIC              0x0200
  787. #define SKB_NUMPAD             0x0400
  788.  
  789. #define OBM_SKBBTNUP           32767
  790. #define OBM_SKBBTNDOWN         32766
  791. #define OBM_SKBBTNDISABLED     32765
  792.  
  793. #define SKN_CHANGED            1
  794.  
  795. #define SKN_POSCHANGED         1
  796. #define SKN_PADCHANGED         2
  797. #define SKN_MINCHANGED         4
  798. #define SKN_VISCHANGED         8
  799. #define SKN_TERMINATED         0xffff
  800.  
  801. BOOL WINAPI ShowKeyboard(HWND, UINT, LPPOINT, LPSKBINFO);
  802.  
  803. /****** New ComboBox Notifications  *****************************************/
  804.  
  805. #define CBN_ENDREC             16
  806. #define CBN_DELAYEDRECOGFAIL   17
  807. #define CBN_RCRESULT           18
  808.  
  809.  
  810. #ifdef __cplusplus
  811. }
  812. #endif    /* __cplusplus */
  813.  
  814. #ifndef RC_INVOKED
  815. #pragma pack()
  816. #endif /* RC_INVOKED */
  817.  
  818. #endif /* #define _INC_PENWIN */
  819.